package org.seedltd.upms.model.detection.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.seedltd.core.jackson.annotation.DynamicEnum;
import org.seedltd.core.jackson.annotation.Sensitive;
import org.seedltd.core.jackson.annotation.ToUserJsonString;
import org.seedltd.upms.constant.DictKeyConst;
import org.seedltd.upms.constant.GlobalConst;
import org.seedltd.upms.model.detection.entity.DetectionOrderLog;
import org.seedltd.upms.model.detection.entity.DetectionTerminal;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 订单管理显示层
 * 
 * @author laizuan
 * @since 2021/07/31
 */
@Getter
@Setter
public class DetectionOrderVO {

    /**
     * 主键
     */
    private Long id;

    /**
     * 用户主键
     */
    private Long userId;

    /**
     * 试剂管主键
     */
    private Long tubeId;

    /**
     * 二维码编号
     */
    private Long qrcodeId;

    /**
     * 销售渠道
     */
    @DynamicEnum(localData = GlobalConst.PURCHASE_CHANNEL_STR)
    private Integer channel;

    /**
     * 二维码对象
     */
    private DetectionQrcodeVO detectionQrcode;

    /**
     * 贩卖机主键
     */
    private Long vendingMachineId;

    /**
     * 手机号，脱敏
     */
    @Sensitive(Sensitive.SensitiveType.MOBILE_PHONE)
    private String mobileSensitive;

    /**
     * 贩卖机对象
     */
    private DetectionTerminal vendingMachine;

    /**
     * 回收箱主键
     */
    private Long recycleBinId;

    /**
     * 回收箱对象
     */
    private DetectionTerminal recycleBin;

    /**
     * 订单号
     */
    private String tradeNo;

    /**
     * 订单总价
     */
    private BigDecimal totalPrice;

    /**
     * 退款标记
     */
    private Integer refundFlag;

    /**
     * 检测状态，1完成检测，0未检测
     */
    @DynamicEnum(localData = GlobalConst.CHECK_STATE_STR)
    private Integer checkState;

    /**
     * 状态。1待支付，5待投递，10检测中，15检测完成
     */
    @DynamicEnum(type = DictKeyConst.DETECTION_ORDER_STATUS)
    private Integer state;

    /**
     * 产品名称
     */
    private String productNames;

    /**
     * 绑定状态，1已绑定，0未绑定
     */
    @DynamicEnum(localData = GlobalConst.BINDING_STATE_STR)
    private Integer bindingState;

    /**
     * 微信商户订单号
     */
    private String transactionId;

    /**
     * 检测时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date checkTime;

    /**
     * 检测人主键
     */
    @ToUserJsonString
    private Long checkBy;

    /**
     * 备注
     */
    private String remark;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date createTime;

    /**
     * 创建人主键
     */
    private Long createBy;

    /**
     * 最后一次修改时间
     */
    private Date updateTime;

    /**
     * 最后一次修改人
     */
    private Long updateBy;

    /**
     * 采样时间
     */
    private Date sampleTime;

    /**
     * 采样者名字
     */
    private String username;


    /**
     * 检测结果字符串状态
     */
    private String resultState;

    /**
     * 检测结果评分
     */
    private Integer resultScope;

    /**
     * 出货状态，1已出货，0未出货
     */
    private Integer exportFlag;

    /**
     * 订单删除状态，1已删除，0未删除
     */
    @DynamicEnum(localData = GlobalConst.YES_OR_NO_STR)
    private Integer deleteFlag;

    /**
     * 绑定信息
     */
    private DetectionOrderBindingVO detectionOrderBinding;

    /**
     * 退款信息
     */
    private DetectionOrderRefundVO orderRefund;

    /**
     * 订单检测项目集合
     */
    private List<DetectionOrderProductVO> detectionOrderProductList;

    /**
     * 订单检流程
     */
    private List<DetectionOrderTracingVO> DetectionOrderTracingList;

    /**
     * 订单日志
     */
    private List<DetectionOrderLog> detectionOrderLogList;
}
